Random number generators used in cryptographic systems generally fall into one of two categories. Pseudo random number generators (PRNGs), also referred to as deterministic random number or bit generators (DRNGs or DRBGs), use a mathematical function to generate a value within a sequence of values that has random distribution characteristics. Good PRNGs are often based on a cryptographic function, have a very long sequence that either never repeats or does not repeat frequently, and are difficult to follow—the progression appears non-predictable. They are relied upon because (1) their output values have known statistical characteristics, and (2) the PRNG is invoke-able, and can be invoked as frequently as necessary to produce random numbers on demand by a user. One of the biggest problems with PRNGs is that if one knows the starting value used to initialize the PRNG, usually called a “seed,” one can reliably determine the entire sequence of values generated by the PRNG.
A second category of random number generators is called “true” random number generators (TRNGs). These are also referred to as non-deterministic random number or bit generators (NRNGs or NRBGs). TRNGs use a value or set of values sampled from a random physical process to create their output sequence of values. Examples of random physical processes include thermal noise generated in a resistor, shot noise in a transistor, the time between spontaneous energy emissions from a body undergoing radioactive decay, and the number of atoms of matter in a given volume of interplanetary space at any given time. Some random processes are more suitable than others for implementation in different electronic communications systems.
It is common to combine a TRNG with a PRNG, either in a single module or as a cascade in which the TRNG output sequence of values is used to seed the PRNG. This arrangement often provides a very high quality source of random numbers that have the unbiased, white spectrum statistical characteristics of a PRNG and the unpredictability of a TRNG. In addition to its other qualities, a PRNG typically produces random numbers at a faster rate than a TRNG. Security is maintained by periodically reseeding the PRNG with the TRNG sufficiently often to limit a statistical likelihood of security breaches.